// import { Page } from "@/types/storeModule"
import { assign } from 'lodash-es'

const state = {
	// 接口调用参数
	params: {
		page: {
			currentPage: 1,
			pageSize: 20,
			totalCount: 0,
			totalPage: 0,
			sortField: 'front_user_id',
			order: 'desc'
		},
		options: {}
	},
	roles: {}, // 权限
	apiName: 'frontUser',
	privileges: ['front_user_add', 'front_user_export', 'front_user_import'],
	// 列表data数据
	isLoading: false,
	tableData: [],
	searchData: [
		{
			id: 'entity.frontLoginname',
			name: '登录名邮箱',
			type: 'text',
			hint: '登录名邮箱',
			defaultValue: ''
		},
		{
			id: 'entity.frontUserName',
			name: '用户姓名',
			type: 'text',
			hint: '用户姓名',
			defaultValue: ''
		}
		// {
		//   id: 'entity.type',
		//   name: '用户类型',
		//   type: 'select',
		//   hint: '用户类型',
		//   options: [
		//     {
		//       key: '1',
		//       value: 'Option1'
		//     },
		//     {
		//       key: '2',
		//       value: 'Option2'
		//     }
		//   ]
		// }
	],
	tableHeadList: [
		{
			label: '调研用户ID',
			prop: 'frontUserId'
		},
		{
			label: '登录名（邮箱）',
			prop: 'frontLoginname'
		},
		{
			label: '用户姓名',
			prop: 'frontUsername',
			slotName: 'frontUsername'
		},
		{
			label: '所属机构ID',
			prop: 'researchOrgId'
		}
	]
}

// getters
const getters = {}

// actions
const actions = {}

// mutations
const mutations = {
	// 更新页面搜索内容
	updateSearchData(state, payload: any[]) {
		state.searchData = payload
	},
	// 更新表格 loading 状态
	updateLoading(state, payload: boolean) {
		state.isLoading = payload
	},

	// 更新数据page
	updatePage(state, payload: any) {
		state.params.page = assign(state.params.page, payload)
	},

	// 更新数据Condition
	updateCondition(state, payload: any) {
		state.params.condition = cloneDeep(payload)
	},

	// 更新data数据
	updateTableData(state, payload: any[]) {
		state.tableData = payload
	},
	// 更新列表表头数据
	updateEditTableList(state, payload: any[]) {
		state.tableHeadList = payload
	},
	// 更新列表参数数据
	updateParams(state, payload: any) {
		state.params = Object.assign({}, state.params, payload)
	},
	// 更新权限
	updateRoles(state, payload: Record<string, boolean>) {
		state.roles = payload
	}
}

export default {
	namespaced: true,
	state,
	getters,
	actions,
	mutations
}
